As the number of available transistors has increased, processor-chip architects have turned to multithreaded processors such as simultaneous multithreaded (SMT) processors as a way to continue to increase performance. Generally, SMT processors permit multiple threads to execute instructions using the same set of functional units within a given core. However, this means that the different hardware threads then compete for use of those functional units. One class of shared resources includes the execution units or functional units such as the integer units, floating-point units, load-store units, and the like. It is predicted that SMT processor will become a commonplace platform for the next generation of processor chips. However, because of its capability to allow sharing of processor resources, SMT technique in processors introduces a new degree of complexity in scheduling.
Real-time concerns have long been researched and implemented in operating systems. However, with the advent of multimedia applications such as mpeg players, Quality of Service (QOS) concerns have been addressed more seriously by a much wider range of operating systems. Now, most operating systems provide some notion of QOS to the applications.
However, when it comes to multithreaded processing, the current operating systems' quality of service schedulers cannot adequately handle threads executing on an SMT processor. This is because the threads interfere with each other, for example, by more than one thread trying to use greater than ½ of the available floating point units, or by colliding in their use of the L1 cache. Because this happens dynamically, it is difficult to predict the performance degradation the interference causes, and thus precludes the ability to make quality of service guarantees. In addition, conventional SMT processor hardware does not provide the operating system with a capability to understand the crucial attributes of a thread on the SMT processor.
Without significantly under utilizing an SMT processor, the operating system cannot provide QOS guarantees. Without knowledge of the characteristics of the threads running on an SMT processor, an operating system would not be able to provide QOS guarantees if it schedules more than one thread on a given SMT core. There is no mechanism currently available for providing information about the functional unit utilization per thread. What is needed is a method and system for the hardware and the operating system on multithreaded processors such as SMT processors to communicate information about the threads on the processors, so that for example, an operating system may provide QOS guarantees.